package br.sddp.util;

import java.io.IOException;

import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import br.sddp.dao.UsuarioDAO;
import br.sddp.modelo.Usuario;

/**
 * Classe que contem metodos uteis para trabalha com jsf.
 * 
 * @author v0rtex
 *
 */
public class WebUtil {

	/**
	 * Metodo que envia uma msg para a tela.
	 * 
	 * @param msg
	 */
	public static void enviarMsg(String msg) {

		FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_INFO, msg , null);
		FacesContext.getCurrentInstance().addMessage(null, fm);
	}

	/**
	 * Metodo que envia uma msg de erro para a tela.
	 * 
	 * @param msg
	 */
	public static void enviarMsgErro(String msg) {
		FacesMessage fm = new FacesMessage(msg) ;
		fm.setSeverity(FacesMessage.SEVERITY_ERROR ) ;
		FacesContext.getCurrentInstance().addMessage(null, fm) ;
	}
	
	/**
	 * Metodo que efetua o redirecionamento de pagina.
	 * 
	 * @param pagina - Pagina destino onde devera redirecionar.
	 */
	public static void redirecionar(String pagina) {
		
		try {
			FacesContext.getCurrentInstance().getExternalContext().redirect(pagina);
		} 
		catch (IOException e) {
			TratadorExceptions.tratarIOException(e);
		}
	}	

	/**
	 * Obtem o usuario logado no sistema.
	 * 
	 * @return
	 */
	public static Usuario getUsuarioLogado() {

		//Obtem o login do usuario que esta armazenado em uma sessao
		ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
		HttpSession sessao = (HttpSession) ec.getSession(true);
		Integer idUsuarioLogado = Integer.parseInt(sessao.getAttribute("id").toString());
		
		//Retorna o usuario logado.
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		return usuarioDAO.recuperarUsuario(idUsuarioLogado);
	}
}
